Traefik

traefik est notre reverse-proxy et émetteur de certificats Let's Encrypt.

Etiquettes (labels)

Pour ajouter la gestion traefik à un container, il nous faut:

  • créer un réseau pour le service
  • utiliser expose à la place de ports pour les ports ouverts du container.
  • on ajouter labels qui lie le réseau docker,
    networks: 
        - service
    expose: 
        - 3001 
    labels:
        - "traefik.enable=true" # Enable reverse-proxy for this service
        - "traefik.docker.network=service" # The external docker network
        - "traefik.http.routers.service.rule=Host(`service.happyngreen.fr`)" # The domain name.
        - "traefik.http.routers.service.entrypoints=web"
        - "traefik.http.routers.service.middlewares=redirect-to-https@docker"
        - "traefik.http.routers.service-secure.rule=Host(`service.happyngreen.fr`)"
        - "traefik.http.routers.service-secure.entrypoints=web-secure"
        - "traefik.http.routers.service-secure.tls=true"
        - "traefik.http.routers.service-secure.tls.certresolver=le" # The Let's Encrypt certificat type
        - "traefik.http.routers.service-secure.service=service_name-secure"
        - "traefik.http.services.service-secure.loadbalancer.server.port=3001" # The exposed port.
Important

un router traefik peut avoir n'importe quel nom, y compris celui de service ou du réseau. uptime-kuma, docker-uptime-kuma, etc.

Une fois que votre docker-compose.yml est bon (volumes, port, network, container_name, etc), lancer le pour créer le network. Alternativement, vous pouvez utiliser:

docker network create service_name

Réseau → Traefik

Pour chaque services docker compose, nous crééons un réseau (nommé d'après le service qui l'utilise) et nous l'ajoutons au docker-compose.yml de traefik, à deux endroits précis:

networks:
    # → 1er endroit
    traefik:
    service:
        name: service # ← le nom du réseau
        external: true # externe car il est créer quand on lance le container
    # etc...

services:
    traefik:
        # (...)
        networks:
            # → 2eme endroit
            traefik:
            service: # ← le nom du réseau
            # etc...

Ensuit, lancer la commandes suivantes pour relancer le container avec les nouveaux réseaus docker.

docker compose up -d

Troubleshooting

Retirer un certificat le-stg

Les certificats Let's Encrypt sont stocker dans $CONFIG/cert/acme.json. Vous pouvez retirer les retirer en supprimant les lignes concerné dans la section le-stg. Il faut ensuite redémarrer traefik → docker compose restart.

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9